/**
 *
 */
package br.com.werp.regras.tesouraria.controle;

import br.com.werp.regras.geral.Auditoria;
import br.com.werp.regras.geral.FabricaSubSistema;
import br.com.werp.regras.geral.util.BeanUtil;
import br.com.werp.regras.geral.util.Util;
import br.com.werp.regras.geral.vos.tabelas.Tipo_composicao;
import br.com.werp.regras.geral.vos.tesouraria.TipoComposicaoFormVO;
import br.com.werp.regras.tesouraria.integracao.FabricaDAO;
import br.com.werp.regras.tesouraria.integracao.TipoComposicaoDAO;

import java.lang.reflect.InvocationTargetException;

import java.util.List;


/**
 * @author Marcos Henrique
 *
 *24/11/2006
 */
public class ControleTipoComposicao {
    public void salvarTipo_composicao(Object form, String usuario)
        throws Exception {
        TipoComposicaoFormVO composicaoFormVO = new TipoComposicaoFormVO();
        BeanUtil.copiarVO(form, composicaoFormVO);

        Tipo_composicao tipo_composicao = new Tipo_composicao();
        BeanUtil.copiarVOStringTipo(composicaoFormVO, tipo_composicao);

        Auditoria auditoria = FabricaSubSistema.getAuditoria();

        TipoComposicaoDAO tipoComposicaoDAO = FabricaDAO.getTipoComposicaoDAO();
        Object key = tipoComposicaoDAO.iniciarTransacao();

        try {
            if (tipo_composicao.getTcom_id() == 0) {
                tipoComposicaoDAO.salvarTipo_composicao(tipo_composicao, key);
                auditoria.auditarRecurso(key, usuario, tipo_composicao,
                    Auditoria.INCLUIR);
            } else {
                tipoComposicaoDAO.atualizarTipo_composicao(tipo_composicao, key);
                auditoria.auditarRecurso(key, usuario, tipo_composicao,
                    Auditoria.ALTERAR);
            }

            tipoComposicaoDAO.concluirTransacao(key);
        } catch (Exception e) {
            tipoComposicaoDAO.abortarTransacao(key);
            throw e;
        }
    }

    public List pesquisarTipo_composicao(Object form) throws Exception {
        TipoComposicaoFormVO tipoComposicaoFormVO = new TipoComposicaoFormVO();
        BeanUtil.copiarVO(form, tipoComposicaoFormVO);

        Tipo_composicao tipo_composicao = new Tipo_composicao();
        BeanUtil.copiarVOStringTipo(tipoComposicaoFormVO, tipo_composicao);

        TipoComposicaoDAO tipoComposicaoDAO = FabricaDAO.getTipoComposicaoDAO();
        List retorno = tipoComposicaoDAO.pesquisarTipo_composicao(tipo_composicao);

        return retorno;
    }

    public void carregarTipo_composicao(Object form) throws Exception {
        Tipo_composicao tipo_composicao = (Tipo_composicao) Util.get0(pesquisarTipo_composicao(
                    form));
        BeanUtil.copiarVOTipoString(tipo_composicao, form);
    }
}
